home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / Icon 8.1 / mem / Documentation / Plain Text / Version 8.10 < prev   
Encoding:
Text File  |  1993-08-17  |  22.4 KB  |  925 lines  |  [TEXT/MPS ]

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.               Version 8.10 of the Icon Programming
  11.                             Language
  12.  
  13.                   Ralph E. Griswold, Clinton L.
  14.                  Jeffery, and Gregg M. Townsend
  15.  
  16.                Department of Computer Science, The
  17.                       University of Arizona
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24. 1.__Introduction
  25.  
  26.    The current version of Icon is Version 8.10.  The second edi-
  27. tion of the Icon book [1] describes Version 8.0.  This descrip-
  28. tion is a supplement to that book.
  29.  
  30.    Most of the language extensions in Version 8.10 are upward-
  31. compatible with previous versions of Icon and most programs writ-
  32. ten for earlier versions work properly under Version 8.10.  The
  33. language additions to Version 8.10 are:
  34.  
  35.      +  a preprocessor
  36.  
  37.      +  an optional interface to graphic facilities (for plat-
  38.         forms that support them)
  39.  
  40.      +  new functions and keywords
  41.  
  42.      +  several minor changes
  43.  
  44.    There also are changes to the implementation in Version 8.10,
  45. including support for multiple storage regions, that provide more
  46. capabilities for some users. See Section 3.
  47.  
  48.  
  49. 2.__Language_Features
  50.  
  51. 2.1__Preprocessing
  52.  
  53.    All Icon source code passes through a preprocessor before
  54. interpretation.  The effects of preprocessing can be seen by run-
  55. ning icont or iconc with the -E flag. Preprocessing by m4, if
  56. selected, precedes Icon's preprocessing and does not apply to
  57. included files.
  58.  
  59.    Preprocessor lines control the actions of the preprocessor and
  60. are not passed to the Icon translator or compiler. If no
  61.  
  62.  
  63.  
  64. IPD212                        - 1 -                March 13, 1993
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. preprocessor lines are present, the source code passes through
  74. the preprocessor unaltered.
  75.  
  76.    A source line is a preprocessor line if its first non-
  77. whitespace character is a $ and if that $ is not followed by
  78. another punctuation character. The general form of a preprocessor
  79. line is
  80.  
  81.         $ directive arguments # comment
  82.  
  83. Whitespace separates tokens when needed, and case is significant,
  84. as in Icon proper. The entire preprocessor directive must appear
  85. on a single line which cannot be continued. The comment portion
  86. is optional. An invalid preprocessor line produces an error
  87. except when skipped by conditional compilation.
  88.  
  89.    Preprocessor lines can appear anywhere in an Icon source file
  90. without regard to procedure, declaration, or expression boun-
  91. daries.
  92.  
  93. Include_Directives
  94.  
  95.    An include directive has the form
  96.  
  97.         $include filename
  98.  
  99.  
  100.    An include directive causes the contents of another file to be
  101. interpolated in the source file. The file name must be quoted if
  102. it is not in the form of an Icon identifier. #line comments are
  103. inserted before and after the included file to allow proper iden-
  104. tification of errors.
  105.  
  106.    Included files may be nested to arbitrary depth, but a file
  107. may not include itself either directly or indirectly. File names
  108. are looked for first in the current directory and then in the
  109. directories listed in the environment variable LPATH.  Relative
  110. paths are interpreted in the preprocessor's context and not in
  111. relation to the including file's location.
  112.  
  113. Line_Directives
  114.  
  115.    A line directive has the form
  116.  
  117.         $line n [filename]
  118.  
  119. The line containing the preprocessing directive is considered to
  120. be line n of the given file (or the current file, if unspecified)
  121. for diagnostic and other purposes. The line number is a simple
  122. unsigned integer. The file name must be quoted if it is not in
  123. the form of an Icon identifier.
  124.  
  125.    Note that the interpretation of n differs from that of the C
  126. preprocessor, which interprets it as the number of the next line.
  127.  
  128.  
  129.  
  130. IPD212                        - 2 -                March 13, 1993
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.    $line is an alternative form of the older, special comment
  140. form #line. The preprocessor recognizes both forms and produces
  141. the fully specified older form for the lexical analyzer.
  142.  
  143. Define_Directives
  144.  
  145.    A define directive has the form
  146.  
  147.         $define name text
  148.  
  149. The define directive defines the text to be substituted for later
  150. occurrences of the identifier name in the source code.  text is
  151. any sequence of characters except that any string or cset
  152. literals must be properly terminated within the definition. Lead-
  153. ing and trailing whitespace are not part of the definition.  The
  154. text can be empty.
  155.  
  156.    Redefinition of a name is allowed only if the new text is
  157. exactly the same as the old text. For example, 3.0 is not the
  158. same as 3.000.
  159.  
  160.    Definitions remain in effect through the end of the current
  161. original source file, crossing include boundaries, but they do
  162. not persist from one command-line file to another.
  163.  
  164.    Note that the Icon preprocessor, unlike the C preprocessor,
  165. does not provide parameterized definitions. If the text begins
  166. with a left parenthesis, it must be separated from the name by at
  167. least one space.
  168.  
  169. Undefine_Directives
  170.  
  171.    An undefine directive has the form
  172.  
  173.         $undef name
  174.  
  175. The current definition of name is removed, allowing its redefini-
  176. tion if desired. It is not an error to undefine a non-existent
  177. name.
  178.  
  179. Predefined_Symbols
  180.  
  181.    At the start of each source file, several symbols are automat-
  182. ically defined to indicate the Icon system configuration. Each
  183. potential predefined symbol corresponds to one of the values pro-
  184. duced by the keyword &features. If a feature is present, the sym-
  185. bol is defined with a value of 1. If a feature is absent, the
  186. symbol is not defined.
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196. IPD212                        - 3 -                March 13, 1993
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.         predefined symbol             &features value
  206.         _AMIGA                        Amiga
  207.         _ACORN                        Acorn Archimedes
  208.         _ATARI                        Atari ST
  209.         _CMS                          CMS
  210.         _MACINTOSH                    Macintosh
  211.         _MSDOS_386                    MS-DOS/386
  212.         _MSDOS                        MS-DOS
  213.         _MVS                          MVS
  214.         _OS2                          OS/2
  215.         _PORT                         PORT
  216.         _UNIX                         UNIX
  217.         _VMS                          VMS
  218.  
  219.  
  220.         _COMPILED                     compiled
  221.         _INTERPRETED                  interpreted
  222.         _ASCII                        ASCII
  223.         _EBCDIC                       EBCDIC
  224.         _EXPANDABLE_REGIONS           expandable regions
  225.         _FIXED_REGIONS                fixed regions
  226.  
  227.  
  228.         _CALLING                      calling to Icon
  229.         _CO_EXPRESSIONS               co-expressions
  230.         _DIRECT_EXECUTION             direct execution
  231.         _EVENT_MONITOR                event monitoring
  232.         _EXECUTABLE_IMAGES            executable images
  233.         _EXTERNAL_FUNCTIONS           external functions
  234.         _KEYBOARD_FUNCTIONS           keyboard functions
  235.         _LARGE_INTEGERS               large integers
  236.         _MEMORY_MONITOR               memory monitoring
  237.         _MULTITASKING                 multiple programs
  238.         _MULTIREGION                  multiple regions
  239.         _PIPES                        pipes
  240.         _RECORD_IO                    record I/O
  241.         _STRING_INVOKE                string invocation
  242.         _SYSTEM_FUNCTION              system function
  243.         _VISUALIZATION                visualization support
  244.         _WINDOW_FUNCTIONS             window functions
  245.         _X_WINDOW_SYSTEM              X Windows
  246.         _PRESENTATION_MGR             Presentation Manager
  247.         _ARM_FUNCTIONS                Archimedes extensions
  248.         _DOS_FUNCTIONS                MS-DOS extensions
  249.  
  250. Predefined symbols have no special status: like other symbols,
  251. they can be undefined and redefined.
  252.  
  253.    A few of the entries in &features that are always available,
  254. such as error traceback, lack corresponding predefined symbols.
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262. IPD212                        - 4 -                March 13, 1993
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271. Substitution
  272.  
  273.    As input is read, each identifier is checked to see if it
  274. matches a previous definition. If it does, the value replaces the
  275. identifier in the input stream.
  276.  
  277.    No whitespace is added or deleted when a definition is
  278. inserted. The replacement text is scanned for defined identif-
  279. iers, possibly causing further substitution, but recognition of
  280. the original identifier name is disabled to prevent infinite
  281. recursion.
  282.  
  283.    Occurrences of defined names within comments, literals, or
  284. preprocessor lines are not altered.
  285.  
  286. Conditional_Compilation
  287.  
  288.    Conditional compilation directives have the form
  289.  
  290.         $ifdef name
  291.  
  292. and
  293.  
  294.         $ifndef name
  295.  
  296. $ifdef or $ifndef cause subsequent code to be accepted or skipped
  297. depending on whether name has been previously defined.  $ifdef
  298. succeeds if a definition exists; $ifndef succeeds if a definition
  299. does not exist. The value of the definition does not matter.
  300.  
  301.    A conditional block has this general form:
  302.  
  303.         $ifdef name   or   $ifndef name
  304.            ... code to use if test succeeds ...
  305.         $else
  306.            ... code to use if test fails ...
  307.         $endif
  308.  
  309. The $else section is optional. Conditional blocks can be nested
  310. provided that all of the $if/$else/$endif directives for a par-
  311. ticular block are in the same source file. This does not prevent
  312. the conditional inclusion of other files via $include as long as
  313. any included conditional blocks are similarly self-contained.
  314.  
  315. Error_Directives
  316.  
  317.    An error directive has the form
  318.  
  319.         $error text
  320.  
  321. An $error directive forces a fatal compilation error displaying
  322. the given text. This is typically used with conditional compila-
  323. tion to indicate an improper set of definitions.
  324.  
  325.  
  326.  
  327.  
  328. IPD212                        - 5 -                March 13, 1993
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337. Subtle_Points
  338.  
  339.    Because substitution occurs on replacement text but not on
  340. preprocessor lines, either of the following sequences is valid:
  341.  
  342.         $define x 1    $define y x
  343.         $define y x    $define x 1
  344.         write(y)       write(y)
  345.  
  346. It is possible to construct pathological examples of definitions
  347. that combine with the input text to form a single Icon token, as
  348. in
  349.  
  350.         $define X e3   $define Y 456e
  351.         write(123X)    write(Y+3)
  352.  
  353. If the value of a definition is an expression, it is wise to
  354. parenthesize it so that precedence causes no problems when it is
  355. substituted.
  356.  
  357.    Redefinition of Icon's reserved words is allowed but not
  358. advised. Redefinition of an identifier associated with a keyword
  359. is similarly dangerous.
  360.  
  361.    The preprocessor is ignorant of multi-line literals and can
  362. potentially be fooled this way into making a substitution inside
  363. a string constant.
  364.  
  365.    The preprocessor works hard to get line numbers right, but
  366. column numbers are likely to be rendered incorrect by substitu-
  367. tions.
  368.  
  369.    Substitution cannot produce a preprocessor directive. By then
  370. it is too late.
  371.  
  372. 2.2__Graphic_Facilities
  373.  
  374.    Version 8.10 provides support for graphic facilities through a
  375. combination of high-level support and a repertoire of functions.
  376. The name X-Icon is used to distinguish versions of Icon that sup-
  377. port these facilities.  Note: There are several changes to X-Icon
  378. in Version 8.10.  Persons who used an earlier version of X-Icon
  379. should consult the current reference manual [2].
  380.  
  381. 2.3__New_Functions_and_Keywords
  382.  
  383.    The new functions and keywords are described briefly here.  At
  384. the end of this report there also is a sheet with more complete
  385. descriptions in the style of the second edition of the Icon book.
  386. This sheet can be trimmed and used as an insert to the book.
  387.  
  388.    There are five new functions:
  389.  
  390.  
  391.  
  392.  
  393.  
  394. IPD212                        - 6 -                March 13, 1993
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.      chdir(s)    Changes the current directory to s but fails if
  404.                  there is no such directory or if the change can-
  405.                  not be made.
  406.  
  407.      delay(i)    Delays execution i milliseconds. Delaying execu-
  408.                  tion is not supported on all platforms; if it is
  409.                  not, there is no delay and delay() fails.
  410.  
  411.      flush(f)    Flushes the output buffers for file f.
  412.  
  413.      function()  Generates the names of the Icon (built-in) func-
  414.                  tions.
  415.  
  416.      sortf(X,i)  Produces a sorted list of the elements of X. The
  417.                  results are similar to those of sort(X,i),
  418.                  except that among lists and among records,
  419.                  structure values are ordered by comparing their
  420.                  ith fields.
  421.  
  422.    There are five new keywords:
  423.  
  424.      &allocated  Generates the number of bytes allocated since
  425.                  the beginning of program execution. The first
  426.                  result is the total number of bytes in all
  427.                  regions, followed by the number of bytes in the
  428.                  static, string, and block regions.
  429.  
  430.      &e          The base of the natural logarithms, 2.71828 ...
  431.  
  432.      &phi        The golden ratio, 1.61803 ...
  433.  
  434.      &pi         The ratio of the circumference of a circle to
  435.                  its diameter, 3.14159 ...
  436.  
  437.      &progname   The file name of the executing program. &prog-
  438.                  name is a variable and a string value can be
  439.                  assigned to it to replace its initial value.
  440.  
  441. The X interface adds additional new keywords [2].
  442.  
  443.    Some UNIX platforms now support the keyboard functions
  444. getch(), getche(), and kbhit(). Whether or not these functions
  445. are supported can be determined from the values generated by
  446. &features.  Note: On UNIX platforms, ``keyboard'' input comes
  447. from standard input, which may not necessarily be the keyboard.
  448. Warning: The keyboard functions under UNIX may not work reliably
  449. in all situations and may leave the console in a strange mode if
  450. interrupted at an unfortunate time. These potential problems
  451. should be kept in mind when using these functions.
  452.  
  453. 2.4__Other_Enhancements
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460. IPD212                        - 7 -                March 13, 1993
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469. Record_Subscripting
  470.  
  471.    A record can now be subscripted by the string name of one of
  472. its fields, as in
  473.  
  474.         z["r"]
  475.  
  476. which is equivalent to
  477.  
  478.         z.r
  479.  
  480. If the named field does not exist for the record, the subscript-
  481. ing expression fails.
  482.  
  483. Multiple_Subscripts
  484.  
  485.    Multiple subscripts are now allowed in subscripting expres-
  486. sions. For example,
  487.  
  488.         L[i, j, k]
  489.  
  490. is equivalent to
  491.  
  492.         L[i][j][k]
  493.  
  494.  
  495. Named_Functions
  496.  
  497.    The function proc(x, i) has been extended so that proc(x, 0)
  498. produces the built-in function named x even if the global iden-
  499. tifier having that name has been assigned another value. proc(x,
  500. 0) fails if x is not the name of a function.
  501.  
  502. 2.5__Minor_Changes
  503.  
  504.      +  The dynamic declaration, a synonym for local, is no
  505.         longer supported.
  506.  
  507.      +  The invocable declaration is accepted but ignored by the
  508.         interpreter to provide source-language compatibility with
  509.         the Icon compiler.  See [3] for a description of this
  510.         declaration.
  511.  
  512.      +  Real literals that are less than 1 no longer need a lead-
  513.         ing zero. For example, .5 now is a valid real literal
  514.         instead of being the dereferencing operator applied to
  515.         the integer 5.
  516.  
  517.      +  The identifiers listed by display() are now given in
  518.         sorted order.
  519.  
  520.      +  In sorting structures, records now are first sorted by
  521.         record name and then by age (serial number).
  522.  
  523.  
  524.  
  525.  
  526. IPD212                        - 8 -                March 13, 1993
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.      +  The keyword &features now includes either interpreted or
  536.         compiled to indicate whether the program is interpreted
  537.         or compiled.
  538.  
  539.      +  If X-Window facilities are supported, &features also
  540.         includes X Windows.
  541.  
  542.      +  If multiple storage regions are supported, &features also
  543.         includes Multiple Regions.
  544.  
  545.      +  Error message 101 now reads integer expected or out of
  546.         range to reflect the fact that not all operations support
  547.         large integers.
  548.  
  549.      +  Error 120 now reads two csets or two sets expected to
  550.         more accurately reflect the fact that set operations
  551.         require arguments of the same type.
  552.  
  553.      +  Error 125, list or set expected, has been added for
  554.         sortf().
  555.  
  556.      +  Errors 140, window expected, and 141, program terminated
  557.         by window manager, have been added when X-Window facili-
  558.         ties are supported.
  559.  
  560.      +  Errors 316, interpreter stack too large, and 318, co-
  561.         expression stack too large, have been added for 16-bit
  562.         platforms.
  563.  
  564.  
  565. 3.__Implementation_Changes
  566.  
  567.    The implementation of Version 8.10 is different in many
  568. respects from the implementation of Version 8.0.  The most signi-
  569. ficant differences are:
  570.  
  571.      +  Icon now uses fixed-sized storage regions.  Multiple
  572.         regions are allocated if needed.
  573.  
  574.      +  Memory monitoring is no longer supported.
  575.  
  576.      +  Under MS-DOS, iconx now finds icode files at any place on
  577.         the PATH specification as well as in the current direc-
  578.         tory.
  579.  
  580.    In addition, the tables used by icont now expand automati-
  581. cally.  The -S option is no longer needed. As a side effect of
  582. this change, the sizes of procedures are no longer listed during
  583. translation.
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592. IPD212                        - 9 -                March 13, 1993
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601. 4.__Limitations,_Bugs,_and_Problems
  602.  
  603.  
  604.      +   Line numbers sometimes are wrong in diagnostic messages
  605.          related to lines with continued quoted literals.
  606.  
  607.      +   Large-integer arithmetic is not supported in i to j and
  608.          seq().  Large integers cannot be assigned to keywords.
  609.  
  610.      +   Large-integer literals are constructed at run-time. Con-
  611.          sequently, they should not be used in loops where they
  612.          would be constructed repeatedly.
  613.  
  614.      +   Conversion of a large integer to a string is quadratic
  615.          in the length of the integer. Conversion of very a large
  616.          integer to a string may take a very long time and give
  617.          the appearance of an endless loop.
  618.  
  619.      +   Right shifting of large negative integers by ishift() is
  620.          inconsistent with the shifting of ordinary integers.
  621.  
  622.      +   Integer overflow on exponentiation may not be detected
  623.          during execution.  Such overflow may occur during type
  624.          conversion.
  625.  
  626.      +   In some cases, trace messages may show the return of
  627.          subscripted values, such as &null[2], that would be
  628.          erroneous if they were dereferenced.
  629.  
  630.      +   If a long file name for an Icon source-language program
  631.          is truncated by the operating system, mysterious diag-
  632.          nostic messages may occur during linking.
  633.  
  634.      +   Stack overflow checking uses a heuristic that is not
  635.          always effective.
  636.  
  637.      +   If an expression such as
  638.  
  639.                  x := create expr
  640.  
  641.          is used in a loop, and x is not a global variable,
  642.          unreferenceable co-expressions are generated by each
  643.          successive create operation.  These co-expressions are
  644.          not garbage collected. This problem can be circumvented
  645.          by making x a global variable or by assigning a value to
  646.          x before the create operation, as in
  647.  
  648.                  x := &null
  649.                  x := create expr
  650.  
  651.  
  652.      +   Stack overflow in a co-expression may not be detected
  653.          and may cause mysterious program malfunction.
  654.  
  655.  
  656.  
  657.  
  658. IPD212                       - 10 -                March 13, 1993
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667. Acknowledgements
  668.  
  669.    The design and implementation of Version 8.10 of Icon was sup-
  670. ported, in part, by National Science Foundation Grants CCR-
  671. 8713690 and CCR-8901573.
  672.  
  673.  
  674.    References
  675.  
  676.  
  677. 1.   R. E. Griswold and M. T. Griswold, The Icon Programming
  678.      Language, Prentice-Hall, Inc., Englewood Cliffs, NJ, second
  679.      edition, 1990.
  680.  
  681. 2.   C. L. Jeffery and G. M. Townsend, X-Icon: An Icon Windows
  682.      Interface; Version 8.10, The Univ. of Arizona Tech. Rep.
  683.      93-9, 1993.
  684.  
  685. 3.   R. E. Griswold, Using Version 8.10 of the Icon Compiler, The
  686.      Univ. of Arizona Icon Project Document IPD214, 1993.
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724. IPD212                       - 11 -                March 13, 1993
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733. __________________________________________________
  734.  
  735. chdir(s) : n                      change directory
  736.  
  737. chdir(s) changes the directory to s but fails if
  738. there is no such directory or if the change cannot
  739. be made. Whether the change in the directory
  740. persists after program termination depends on the
  741. operating system on which the program runs.
  742.  
  743. Error:  103 s not string
  744.  
  745. __________________________________________________
  746.  
  747. delay(i) : n                       delay execution
  748.  
  749. delay(i) delays execution i milliseconds. This
  750. function is not supported on all platforms; if it
  751. is not, there is no delay and delay() fails.
  752.  
  753. Error:  101 i not integer
  754.  
  755. __________________________________________________
  756.  
  757. flush(f) : n                          flush buffer
  758.  
  759. flush(f) flushes the output buffers for f.
  760.  
  761. Error:  105 f not file
  762.  
  763. __________________________________________________
  764.  
  765. function() : s1, s2,...,sn generate function names
  766.  
  767. function() generates the names of the Icon
  768. (built-in) functions.
  769.  
  770. __________________________________________________
  771.  
  772. sortf(X,i) : L           sort list or set by field
  773.  
  774. sortf(X,i) produces a sorted list of the values in
  775. X.  Sorting is primarily by type and in most
  776. respects is the same as with sort(X,i). However,
  777. among lists and among records, two structures are
  778. ordered by comparing their ith fields. i can be
  779. negative but not zero. Two structures having equal
  780. ith fields are ordered as they would be in regular
  781. sorting, but structures lacking an ith field
  782. appear before structures having them.
  783.  
  784. Default:i      1
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802.        Errors: 101 i not integer
  803.                115 X not list or set
  804.                205 i =  0
  805.                307 inadequate space in block region
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868.        __________________________________________________
  869.  
  870.        &allocated : i1, i2, i3, i4  cumulative allocation
  871.  
  872.        &allocated generates the total amount of space, in
  873.        bytes, allocated since the beginning of program
  874.        execution.  The first value is the total for all
  875.        regions, followed by the totals for the static,
  876.        string, and block regions, respectively.  The
  877.        space allocated in the static region is always
  878.        given as zero.  Note: &allocated gives the
  879.        cumulative allocation; &storage gives the current
  880.        allocation; that is, the amount that has not been
  881.        freed by garbage collection.
  882.  
  883.        __________________________________________________
  884.  
  885.        &e : r                  base of natural logarithms
  886.  
  887.        The value of &e is the base of the natural
  888.        logarithms, 2.71828 ... .
  889.  
  890.        __________________________________________________
  891.  
  892.        &phi : r                              golden ratio
  893.  
  894.        The value of &phi is the golden ratio, 1.61803 ...
  895.        .
  896.  
  897.        __________________________________________________
  898.  
  899.        &pi : ratio of circumference to diameter of a circle
  900.  
  901.        The value of &pi is the ratio of the circumference
  902.        of a circle to its diameter, 3.14159 ... .
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.